#include<stdio.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

int main()
{
  //重定向
  //输出重定向
  //打开一个文件
  //int fd=open("log.txt",O_WRONLY|O_CREAT|O_APPEND,0666);
  //if(fd<0)
  //{
  //  perror("fd为0");
  //  exit(1);
  //}

  //输出重定向操作
  //dup2(fd,1);
  //close(fd);

  //如果没有重定向操作,打印的内容将在显示器上看到,这里将需要打印的内容写入到文件里面
  
 // printf("fd=%d\n",fd);
 // fprintf(stdout,"hahahahhhaha\n");
// fprintf(stdout,"aaaaaaaaaaaa\n");

  //输入重定向
//  int fd2=open("log2.txt",O_WRONLY|O_CREAT|O_APPEND,0666);
//  if(fd2<0)
//  {
//    perror("fd2");
//    return 1;
//  }

  //输入重定向操作
// dup2(fd2,0);
// close(fd2);
  //从键盘写入操作
//  char buffer[1024]={0};
// ssize_t s=read(0,buffer,sizeof(buffer)-1);
//  if(s>0)
//  {
//    buffer[s]='\0';
//    printf("buffer: %s",buffer);
//
//  }



  //stdout与stderr的区别
  //stdout表示标准输出（文件），它是命令或程序正常输出的数据流，通常是在终端或标准输出文件中显示或写入输出内容。
  //stderr表示标准错误（文件），它是命令或程序输出错误消息的数据流，通常是在终端或标准错误文件中显示或写入错误信息
  //这两者之间的主要区别在于，stdout用于标准的程序输出，而stderr用于错误输出。因此，当程序运行时遇到错误时，错误消息会被发送到stderr，而不是stdout。这使得错误消息和标准输出数据流分离，方便我们识别和处理程序运行中的错误和异常情况
  fprintf(stdout, "hello normal message\n");
    fprintf(stdout, "hello normal message\n");
    fprintf(stdout, "hello normal message\n");
    fprintf(stdout, "hello normal message\n");
    fprintf(stdout, "hello normal message\n");

    fprintf(stderr, "hello error message\n");
    fprintf(stderr, "hello error message\n");
    fprintf(stderr, "hello error message\n");
    fprintf(stderr, "hello error message\n");
    fprintf(stderr, "hello error message\n");

    //./myfile 1>normal.txt 2>error.txt
    //将内容分别输出重定向到这两个文件
    //./myfile 1>all.txt 2>&1
    //将内容输出重定向到一个文件
    //其中1可以省略
    //


    //命令或程序运行正常时，输出到stdout，反之输出到stderr
  return 0;
}
